package com.fight.strive.sys.modules.rbac.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fight.strive.sys.modules.common.PageR;
import com.fight.strive.sys.modules.rbac.entity.RbacPermissionEntity;
import com.fight.strive.sys.modules.validator.StriveValid;

import java.util.List;
import java.util.Map;

public interface RbacPermissionService extends IService<RbacPermissionEntity> {

    /**
     * 保存功能权限
     *
     * @param entity entity
     */
    void savePermission(@StriveValid RbacPermissionEntity entity);

    /**
     * 分页查询功能
     *
     * @param page page
     * @return entity
     */
    IPage<RbacPermissionEntity> listByPage(PageR<RbacPermissionEntity> page);

    /**
     * 根据角色ID 和 资源ID 获取功能权限列表
     *
     * @param roleId     roleId
     * @param resourceId resourceId
     * @return list
     */
    List<RbacPermissionEntity> listByRoleIdAndResourceId(Long roleId, Long resourceId);

    /**
     * 根据角色ID 和 资源ID 获取功能权限代码列表
     *
     * @param roleId     roleId
     * @param resourceId resourceId
     * @return entity
     */
    Map<String, Boolean> listPermissionCodeByRoleIdAndResourceId(Long roleId, Long resourceId);
}
